﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Centrify.Cfw;
using System.IO;

namespace Player
{
    public static class ConsoleSettings
    {
        public static int UpdateInterval = 50;
        public static int FrameBufferSize = 2000;
        public static int FrameBufferSizeWin = 1300;
    }

    public class CentrifyCommonSettings
    {
        public static readonly string SOFTWARE = "SOFTWARE";
        public static readonly string POLICIES = Path.Combine(SOFTWARE, "Policies");
        public static readonly string COMPANY_NAME = "Centrify";
        public static readonly string CENTRIFY_COMMON_KEY = "Centrify Common Settings";
        public static readonly string COMPANY_REG_KEY = Path.Combine(SOFTWARE, COMPANY_NAME);
    }

    public static class Settings
    {
        private const string None = "<none>";

        public static string ServiceName
        {
            // TODO: make the service name unique to all projects - in case we changed it again.
            get { return "DirectAudit 2012 Collector"; }
        }

//        public static AdGuid InstallationGuid
//        {
//            get
//            {
//                string guidAtDomain = SecuredInstallation;
//                if (guidAtDomain == null)
//                    return null;
//                else
//                    return new AdGuid(guidAtDomain);
//            }
//        }

//        public static string SecuredInstallation
//        {
//            get
//            {
//                // Note: The agent service goes directly to the policy files
//                // to retrieve the installation Guid (more tamper-proof).  This method
//                // is only used by collector/configuration/diagnostics -- should be the same value
//                // unless someone has tried to pull a registry trick.
//                string val = RegistryReader.GetMachineString(RegistrySchema.Common.COMMON_KEY,
//                                                             RegistrySchema.Common.INSTALLATION_GUID,
//                                                             RegistrySchema.Common.INSTALLATION_GUID_GP,
//                                                             RegistrySchema.Common.INSTALLATION_GUID_DEFAULT);
//                Log.Verbose("Get installation guid string: {0}", val ?? None);
//                return val;
//            }
//        }

//        public static Guid InstallationId
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.INSTALLATION_ID,
//                                                             RegistrySchema.Collector.INSTALLATION_ID_GP,
//                                                             RegistrySchema.Collector.INSTALLATION_ID_DEFAULT);
//                Log.Verbose("Get installation id: {0}", val ?? None);
//                Guid guid = Guid.Empty;
//                if (!string.IsNullOrEmpty(val))
//                {
//                    guid = new Guid(val);
//                }
//                return guid;
//            }
//            set
//            {
//                string val = (value == Guid.Empty) ? null : value.ToString();
//                Log.Verbose("Set installation id: {0}", val ?? None);
//                WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.INSTALLATION_ID,
//                                   val);
//            }
//        }

//        public static int PortNumber
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.PORT_NUMBER,
//                                                       RegistrySchema.Collector.PORT_NUMBER_GP,
//                                                       RegistrySchema.Collector.PORT_NUMBER_DEFAULT);
//                Log.Verbose("Get collector port number: {0}", val);
//                return val;
//            }
//            set
//            {
//                Log.Verbose("Set collector port number: {0}", value);
//                WriteMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                RegistrySchema.Collector.PORT_NUMBER,
//                                value);
//            }
//        }

//        public static LoggingLevel LoggingLevel
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.LOG_LEVEL,
//                                                             RegistrySchema.Collector.LOG_LEVEL_GP,
//                                                             RegistrySchema.Collector.LOG_LEVEL_DEFAULT);
//                Log.Verbose("Get collector service log level: {0}", val);
//                return Log.StringToLoggingLevel(val);
//            }
//            set
//            {
//                // that is it not good to use string as the log 
//                // level but we do it here because the collector service 
//                // is using string now
//                // TODO:we should fix this in collector service later

//                Log.Verbose("Set collector service log level: {0}", value.ToString());
//                WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.LOG_LEVEL,
//                                   value.ToString());
//            }
//        }


//        public static TimeSpan StatusUpdateInterval
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.STATUS_UPDATE_INTERVAL,
//                                                       RegistrySchema.Collector.STATUS_UPDATE_INTERVAL_GP,
//                                                       RegistrySchema.Collector.STATUS_UPDATE_INTERVAL_DEFAULT);
//                Log.Verbose("Status update interval: {0}", val);
//                return TimeSpan.FromSeconds(val);
//            }
//        }

//        public static bool IsUseSqlAuthentication
//        {
//            get
//            {
//                bool val = RegistryReader.GetMachineBool(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                         RegistrySchema.Collector.USE_SQL_AUTHEN,
//                                                         RegistrySchema.Collector.USE_SQL_AUTHEN_GP,
//                                                         RegistrySchema.Collector.USE_SQL_AUTHEN_DEFAULT);
//                Log.Verbose("Get use sql server authentication: {0}", val);
//                return val;
//            }
//            set
//            {
//                Log.Verbose("Set use sql server authentication: {0}", value);

//                WriteMachineBool(RegistrySchema.Collector.COLLECTOR_KEY,
//                                 RegistrySchema.Collector.USE_SQL_AUTHEN,
//                                 value);
//                if (value)
//                {
//                    RegistryWriter.CreateSecureKey(RegistrySchema.Collector.SQL_AUTHEN_KEY);
//                }
//                else
//                {
//                    RegistryWriter.DeleteMachineKey(RegistrySchema.Collector.SQL_AUTHEN_KEY);
//                }
//            }
//        }

//        [SuppressMessage("Microsoft.Naming", "CA1726:UsePreferredTerms")]
//        public static string SqlLoginName
//        {
//            get
//            {
//                string login = string.Empty;
//                if (IsUseSqlAuthentication)
//                {
//                    byte[] encrypted = RegistryReader.GetMachineBinary(RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                                                       RegistrySchema.Collector.SQL_USERNAME,
//                                                                       RegistrySchema.Collector.SQL_USERNAME_GP,
//                                                                       null);
//                    if (encrypted != null)
//                        login = DataProtector.MachineDecrypt(encrypted);
//                }
//                Log.Verbose("Get sql login: {0}", login);
//                return login;
//            }
//            set
//            {
//                Log.Verbose("Set sql login name: {0}", value ?? None);
//                byte[] val = value == null ? null : DataProtector.MachineEncrypt(value);
//                WriteMachineBinary(RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                   RegistrySchema.Collector.SQL_USERNAME,
//                                   val);
//            }
//        }

//        public static string SqlPassword
//        {
//            get
//            {
//                string password = string.Empty;
//                if (IsUseSqlAuthentication)
//                {
//                    byte[] encrypted = RegistryReader.GetMachineBinary(RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                                                       RegistrySchema.Collector.SQL_PASSWORD,
//                                                                       RegistrySchema.Collector.SQL_PASSWORD_GP,
//                                                                       null);
//                    if (encrypted != null)
//                        password = DataProtector.MachineDecrypt(encrypted);
//                }
//                return password;
//            }
//            set
//            {
//                byte[] val = value == null ? null : DataProtector.MachineEncrypt(value);
//                WriteMachineBinary(RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                   RegistrySchema.Collector.SQL_PASSWORD,
//                                   val);
//            }
//        }

//        static public int SessionStaleMinutes
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.SESSION_STALE_MINUTES,
//                                                       RegistrySchema.Collector.SESSION_STALE_MINUTES_GP,
//                                                       RegistrySchema.Collector.SESSION_STALE_MINUTES_DEFAULT);
//                return val;
//            }
//        }

//        static public int UnixFrameRate
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.UNIX_FRAME_RATE,
//                                                       RegistrySchema.Collector.UNIX_FRAME_RATE_GP,
//                                                       RegistrySchema.Collector.UNIX_FRAME_RATE_DEFAULT);
//                return val;
//            }
//        }
//        static public int SnapshotMaxSize
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.SNAPSHOT_MAX_SIZE,
//                                                       RegistrySchema.Collector.SNAPSHOT_MAX_SIZE_GP,
//                                                       RegistrySchema.Collector.SNAPSHOT_MAX_SIZE_DEFAULT);
//                return val;
//            }
//        }

//        static public int ResolvedNamePadLength
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.RESOLVED_NAME_PAD_LENGTH,
//                                                       RegistrySchema.Collector.RESOLVED_NAME_PAD_LENGTH_GP,
//                                                       RegistrySchema.Collector.RESOLVED_NAME_PAD_LENGTH_DEFAULT);
//                return val;
//            }
//        }

//        public static AuditDatabase.CollectorState CurrentState
//        {
//            get
//            {
//                AuditDatabase.CollectorState val = (AuditDatabase.CollectorState)
//                    RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                 RegistrySchema.Collector.CURRENT_STATE,
//                                                 RegistrySchema.Collector.CURRENT_STATE_GP,
//                                                 RegistrySchema.Collector.CURRENT_STATE_DEFAULT);
//                Log.Verbose("Get current collector state: {0}", val);
//                return val;
//            }
//            set
//            {
//                WriteMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                RegistrySchema.Collector.CURRENT_STATE,
//                                (int)value);
//            }
//        }

//        public static string CurrentStateDescription
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.CURRENT_STATE_DESCRIPTION,
//                                                             RegistrySchema.Collector.CURRENT_STATE_DESCRIPTION_GP,
//                                                             RegistrySchema.Collector.CURRENT_STATE_DESCRIPTION_DEFAULT);
//                Log.Verbose("Get current state description: {0}", val);
//                return val;
//            }
//            set
//            {
//                RegistryWriter.WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                  RegistrySchema.Collector.CURRENT_STATE_DESCRIPTION,
//                                                  value);
//            }
//        }

//        public static bool CurrentInstallationSecured // TBD: change this to IsCurrentInstallationSecured?
//        {
//            get
//            {
//                bool val = RegistryReader.GetMachineBool(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                         RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED,
//                                                         RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED_GP,
//                                                         RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED_DEFAULT);
//                Log.Verbose("Get current installation secured: {0}", val);
//                return val;
//            }
//            set
//            {
//                RegistryWriter.WriteMachineBool(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED,
//                                                value);
//            }
//        }

//        /// <summary>
//        /// The name of the current installation
//        /// </summary>
//        public static string CurrentInstallation
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.CURRENT_INSTALLATION,
//                                                             RegistrySchema.Collector.CURRENT_INSTALLATION_GP,
//                                                             RegistrySchema.Collector.CURRENT_INSTALLATION_DEFAULT);
//                Log.Verbose("Get current installation: {0}", val);
//                return val;
//            }
//            set
//            {
//                RegistryWriter.WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                  RegistrySchema.Collector.CURRENT_INSTALLATION,
//                                                  value);
//            }
//        }

//        /// <summary>
//        /// The name of the current Audit Store
//        /// </summary>
//        public static string CurrentAuditStore
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.CURRENT_AUDITSTORE,
//                                                             RegistrySchema.Collector.CURRENT_AUDITSTORE_GP,
//                                                             RegistrySchema.Collector.CURRENT_AUDITSTORE_DEFAULT);
//                Log.Verbose("Get current Audit Store: {0}", val);
//                return val;
//            }
//            set
//            {
//                RegistryWriter.WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                  RegistrySchema.Collector.CURRENT_AUDITSTORE,
//                                                  value);
//            }
//        }

//        /// <summary>
//        /// The name of the current Audit Store Database
//        /// </summary>
//        public static string CurrentDatabase
//        {
//            get
//            {
//                string val = RegistryReader.GetMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                             RegistrySchema.Collector.CURRENT_DATABASE,
//                                                             RegistrySchema.Collector.CURRENT_DATABASE_GP,
//                                                             RegistrySchema.Collector.CURRENT_DATABASE_DEFAULT);
//                Log.Verbose("Get current database: {0}", val);
//                return val;
//            }
//            set
//            {
//                RegistryWriter.WriteMachineString(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                  RegistrySchema.Collector.CURRENT_DATABASE,
//                                                  value);
//            }
//        }

//        public static int CurrentPortNumber
//        {
//            get
//            {
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.CURRENT_PORT_NUMBER,
//                                                       RegistrySchema.Collector.CURRENT_PORT_NUMBER_GP,
//                                                       RegistrySchema.Collector.CURRENT_PORT_NUMBER_DEFAULT);
//                Log.Verbose("Get collector current port number: {0}", val);
//                return val;
//            }
//            set
//            {
//                Log.Verbose("Set collector current port: {0}", value);
//                WriteMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                RegistrySchema.Collector.CURRENT_PORT_NUMBER,
//                                value);
//            }
//        }

        static public int CompressionLevel
        {
            get
            {
#if DEBUG || TESTBED
                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
                                                       RegistrySchema.Collector.COMPRESSION_LEVEL,
                                                       RegistrySchema.Collector.COMPRESSION_LEVEL_GP,
                                                       RegistrySchema.Collector.COMPRESSION_LEVEL_DEFAULT);
#else
                int val = RegistrySchema.Collector.COMPRESSION_LEVEL_DEFAULT;
#endif
                return val;
            }
        }

//        static public int QueueCapacity
//        {
//            get
//            {
//#if DEBUG || TESTBED
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.QUEUE_CAPACITY,
//                                                       RegistrySchema.Collector.QUEUE_CAPACITY_GP,
//                                                       RegistrySchema.Collector.QUEUE_CAPACITY_DEFAULT);
//#else
//                int val = RegistrySchema.Collector.QUEUE_CAPACITY_DEFAULT;
//#endif
//                return val;
//            }
//        }

//        public static bool WdadCompression
//        {
//            get
//            {
//#if DEBUG || TESTBED
//                bool val = RegistryReader.GetMachineBool(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                         RegistrySchema.Collector.WDAD_COMPRESSION,
//                                                         RegistrySchema.Collector.WDAD_COMPRESSION_GP,
//                                                         RegistrySchema.Collector.WDAD_COMPRESSION_DEFAULT);
//#else
//                bool val = RegistrySchema.Collector.WDAD_COMPRESSION_DEFAULT;
//#endif
//                return val;
//            }
//        }

//        static public TimeSpan InitializationInterval
//        {
//            get
//            {
//#if DEBUG || TESTBED
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.INITIALIZATION_INTERVAL,
//                                                       RegistrySchema.Collector.INITIALIZATION_INTERVAL_GP,
//                                                       RegistrySchema.Collector.INITIALIZATION_INTERVAL_DEFAULT);
//#else
//                int val = RegistrySchema.Collector.INITIALIZATION_INTERVAL_DEFAULT;
//#endif
//                return TimeSpan.FromSeconds(val);
//            }
//        }

//        static public TimeSpan UpdateConfigurationInterval
//        {
//            get
//            {
//#if DEBUG || TESTBED
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.UPDATE_CONFIGURATION_INTERVAL,
//                                                       RegistrySchema.Collector.UPDATE_CONFIGURATION_INTERVAL_GP,
//                                                       RegistrySchema.Collector.UPDATE_CONFIGURATION_INTERVAL_DEFAULT);
//#else
//                int val = RegistrySchema.Collector.UPDATE_CONFIGURATION_INTERVAL_DEFAULT;
//#endif
//                return TimeSpan.FromSeconds(val);
//            }
//        }

//        static public TimeSpan ShortRetryInterval
//        {
//            get
//            {
//#if DEBUG || TESTBED
//                int val = RegistryReader.GetMachineInt(RegistrySchema.Collector.COLLECTOR_KEY,
//                                                       RegistrySchema.Collector.SHORT_RETRY_INTERVAL,
//                                                       RegistrySchema.Collector.SHORT_RETRY_INTERVAL_GP,
//                                                       RegistrySchema.Collector.SHORT_RETRY_INTERVAL_DEFAULT);
//#else
//                int val = RegistrySchema.Collector.SHORT_RETRY_INTERVAL_DEFAULT;
//#endif
//                return TimeSpan.FromSeconds(val);
//            }
//        }

//        public static bool AllowModify
//        {
//            get
//            {
//                bool allowModify = RegistryWriter.AllowModify(RegistrySchema.Collector.COLLECTOR_KEY);
//                if (allowModify)
//                    Log.Verbose("Current user has permission to modify local registry");
//                else
//                    Log.Error("Current user does not have permission to modify local registry");
//                return allowModify;
//            }
//        }

//        public static void Delete()
//        {
//            try
//            {
//                Log.Verbose("Delete all collector settings");

//                RegistryWriter.DeleteMachineKey(RegistrySchema.Collector.COLLECTOR_KEY);
//            }
//            catch (UnauthorizedAccessException e)
//            {
//                Log.Error("Error occurs when deleting the collector settings from registry, error={0}", e);
//                throw new UnauthorizedAccessException(Resources.ERROR_REMOVE_COLLECTOR_SETTINGS);
//            }
//        }

//        public static string Export()
//        {
//            StringBuilder sb = new StringBuilder();
//            sb.AppendLine(RegistrySetting.ExportValue(RegistrySchema.Common.COMMON_KEY, RegistrySchema.Common.INSTALLATION_GUID, true));
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.INSTALLATION_ID,
//                                   RegistrySchema.Collector.INSTALLATION_ID_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.PORT_NUMBER,
//                                   RegistrySchema.Collector.PORT_NUMBER_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.LOG_LEVEL,
//                                   RegistrySchema.Collector.LOG_LEVEL_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.STATUS_UPDATE_INTERVAL,
//                                   RegistrySchema.Collector.STATUS_UPDATE_INTERVAL_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.USE_SQL_AUTHEN,
//                                   RegistrySchema.Collector.USE_SQL_AUTHEN_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                   RegistrySchema.Collector.SQL_USERNAME,
//                                   RegistrySchema.Collector.SQL_USERNAME_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.SQL_AUTHEN_KEY,
//                                   RegistrySchema.Collector.SQL_PASSWORD,
//                                   RegistrySchema.Collector.SQL_PASSWORD_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.SESSION_STALE_MINUTES,
//                                   RegistrySchema.Collector.SESSION_STALE_MINUTES_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.UNIX_FRAME_RATE,
//                                   RegistrySchema.Collector.UNIX_FRAME_RATE_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.SNAPSHOT_MAX_SIZE,
//                                   RegistrySchema.Collector.SNAPSHOT_MAX_SIZE_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.RESOLVED_NAME_PAD_LENGTH,
//                                   RegistrySchema.Collector.RESOLVED_NAME_PAD_LENGTH_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.CURRENT_INSTALLATION,
//                                   RegistrySchema.Collector.CURRENT_INSTALLATION_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.CURRENT_AUDITSTORE,
//                                   RegistrySchema.Collector.CURRENT_AUDITSTORE_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.CURRENT_DATABASE,
//                                   RegistrySchema.Collector.CURRENT_DATABASE_GP);
//            RegistrySetting.Export(ref sb,
//                                   RegistrySchema.Collector.COLLECTOR_KEY,
//                                   RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED,
//                                   RegistrySchema.Collector.CURRENT_INSTALLATION_SECURED_GP);
//            return sb.ToString();
//        }

//        static internal void WriteMachineString(string keyName, string valueName, string value)
//        {
//            try
//            {
//                RegistryWriter.WriteMachineString(keyName, valueName, value);
//            }
//            catch (UnauthorizedAccessException e)
//            {
//                throw new DirectAuditException(Resources.ERROR_INSUFFICIENT_PERMISSION_CONFIG_COLLECTOR, e);
//            }
//        }

//        static internal void WriteMachineInt(string keyName, string valueName, int value)
//        {
//            try
//            {
//                RegistryWriter.WriteMachineInt(keyName, valueName, value);
//            }
//            catch (UnauthorizedAccessException e)
//            {
//                throw new DirectAuditException(Resources.ERROR_INSUFFICIENT_PERMISSION_CONFIG_COLLECTOR, e);
//            }
//        }

//        static internal void WriteMachineBool(string keyName, string valueName, bool value)
//        {
//            try
//            {
//                RegistryWriter.WriteMachineBool(keyName, valueName, value);
//            }
//            catch (UnauthorizedAccessException e)
//            {
//                throw new DirectAuditException(Resources.ERROR_INSUFFICIENT_PERMISSION_CONFIG_COLLECTOR, e);
//            }
//        }

//        static internal void WriteMachineBinary(string keyName, string valueName, byte[] value)
//        {
//            try
//            {
//                RegistryWriter.WriteMachineBinary(keyName, valueName, value);
//            }
//            catch (UnauthorizedAccessException e)
//            {
//                throw new DirectAuditException(Resources.ERROR_INSUFFICIENT_PERMISSION_CONFIG_COLLECTOR, e);
//            }
//        }
    }
}
